
<!DOCTYPE html>
<html lang="zh_cn">
<head>
    <meta charset="utf-8" />
    <title>初见Rust，从入土到入门 | 白熊の窝</title>
    <meta name="author" content="白熊_IceBear" />
    <meta name="description" content="一只会爱与破坏的白熊" />
    <meta name="keywords" content="计算机爱好者" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
    <link rel="icon" href="/images/avatar.jpg" />
    <link rel="preconnect" href="https://s4.zstatic.net" />
<script src="https://s4.zstatic.net/ajax/libs/vue/3.3.7/vue.global.prod.min.js"></script>
<link rel="stylesheet" href="https://s4.zstatic.net/ajax/libs/font-awesome/6.4.2/css/all.min.css" />
<link rel="preconnect" href="https://fonts.loli.net" />
<link rel="preconnect" href="https://gstatic.loli.net" crossorigin />
<link rel="stylesheet" href="https://fonts.loli.net/css2?family=Fira+Code:wght@400;500;600;700&family=Lexend:wght@400;500;600;700;800;900&family=Noto+Sans+SC:wght@400;500;600;700;800;900&display=swap" />
<script> const mixins = {}; </script>

<script src="https://polyfill.io/v3/polyfill.min.js?features=default"></script>


<script src="https://s4.zstatic.net/ajax/libs/highlight.js/11.9.0/highlight.min.js"></script>
<script src="https://s4.zstatic.net/ajax/libs/highlightjs-line-numbers.js/2.8.0/highlightjs-line-numbers.min.js"></script>
<link
    rel="stylesheet"
    href="https://s4.zstatic.net/ajax/libs/highlight.js/11.9.0/styles/github.min.css"
/>
<script src="/js/lib/highlight.js"></script>


<script src="https://s4.zstatic.net/ajax/libs/KaTeX/0.16.9/katex.min.js"></script>
<script src="https://s4.zstatic.net/ajax/libs/KaTeX/0.16.9/contrib/auto-render.min.js"></script>
<link rel="stylesheet" href="https://s4.zstatic.net/ajax/libs/KaTeX/0.16.9/katex.min.css" />
<script src="/js/lib/math.js"></script>


<script src="/js/lib/preview.js"></script>









<link rel="stylesheet" href="/css/main.css" />

<meta name="generator" content="Hexo 7.1.1"></head>
<body>
    <div id="layout">
        <transition name="fade">
            <div id="loading" v-show="loading">
                <div id="loading-circle">
                    <h2>LOADING</h2>
                    <p>加载过慢请开启缓存 浏览器默认开启</p>
                    <img src="/images/loading.gif" />
                </div>
            </div>
        </transition>
        <div id="menu" :class="{ hidden: hiddenMenu, 'menu-color': menuColor}">
    <nav id="desktop-menu">
        <a class="title" href="/">
            <span>白熊の窝</span>
        </a>
        
        <a href="/">
            <i class="fa-solid fa-house fa-fw"></i>
            <span>&ensp;首页</span>
        </a>
        
        <a href="/archives">
            <i class="fa-solid fa-box-archive fa-fw"></i>
            <span>&ensp;文章</span>
        </a>
        
        <a href="/categories/%E7%BB%8F%E5%8E%86">
            <i class="fa-solid fa-bookmark fa-fw"></i>
            <span>&ensp;类别</span>
        </a>
        
        <a href="/tags/2024">
            <i class="fa-solid fa-tags fa-fw"></i>
            <span>&ensp;标签</span>
        </a>
        
    </nav>
    <nav id="mobile-menu">
        <div class="title" @click="showMenuItems = !showMenuItems">
            <i class="fa-solid fa-bars fa-fw"></i>
            <span>&emsp;白熊の窝</span>
        </div>
        <transition name="slide">
            <div class="items" v-show="showMenuItems">
                
                <a href="/">
                    <div class="item">
                        <div style="min-width: 20px; max-width: 50px; width: 10%">
                            <i class="fa-solid fa-house fa-fw"></i>
                        </div>
                        <div style="min-width: 100px; max-width: 150%; width: 20%">首页</div>
                    </div>
                </a>
                
                <a href="/archives">
                    <div class="item">
                        <div style="min-width: 20px; max-width: 50px; width: 10%">
                            <i class="fa-solid fa-box-archive fa-fw"></i>
                        </div>
                        <div style="min-width: 100px; max-width: 150%; width: 20%">文章</div>
                    </div>
                </a>
                
                <a href="/categories/%E7%BB%8F%E5%8E%86">
                    <div class="item">
                        <div style="min-width: 20px; max-width: 50px; width: 10%">
                            <i class="fa-solid fa-bookmark fa-fw"></i>
                        </div>
                        <div style="min-width: 100px; max-width: 150%; width: 20%">类别</div>
                    </div>
                </a>
                
                <a href="/tags/2024">
                    <div class="item">
                        <div style="min-width: 20px; max-width: 50px; width: 10%">
                            <i class="fa-solid fa-tags fa-fw"></i>
                        </div>
                        <div style="min-width: 100px; max-width: 150%; width: 20%">标签</div>
                    </div>
                </a>
                
            </div>
        </transition>
    </nav>
</div>
<transition name="fade">
    <div id="menu-curtain" @click="showMenuItems = !showMenuItems" v-show="showMenuItems"></div>
</transition>

        <div id="main" :class="loading ? 'into-enter-from': 'into-enter-active'">
            <div class="article">
    <div>
        <h1>初见Rust，从入土到入门</h1>
    </div>
    <div class="info">
        <span class="date">
            <span class="icon">
                <i class="fa-solid fa-calendar fa-fw"></i>
            </span>
            2024/4/28
        </span>
        
        <span class="category">
            <a href="/categories/%E7%BB%8F%E5%8E%86/">
                <span class="icon">
                    <i class="fa-solid fa-bookmark fa-fw"></i>
                </span>
                经历
            </a>
        </span>
        
        
        <span class="tags">
            <span class="icon">
                <i class="fa-solid fa-tags fa-fw"></i>
            </span>
            
            
            <span class="tag">
                
                <a href="/tags/2024/" style="color: #ff7d73">2024</a>
            </span>
            
            <span class="tag">
                
                <a href="/tags/%E6%80%9D%E7%BB%AA/" style="color: #00bcd4">思绪</a>
            </span>
            
        </span>
        
    </div>
    
    <div class="content" v-pre>
        <p>&emsp;&emsp;白熊的专业是微电子科学与工程，并不是传统计算机大类中的专业，但是看到朋友转发的操作系统训练营宣传后，想借这个机会熟悉一些关于操作系统的内容，增强自己对硬件驱动、指令集等（尤其是RISC-V）的了解。由于之前没有系统地学过任何计算机方面的知识，而且还是个freshman，基础可以说是相当薄弱，在第一阶段学习Rust的过程中，我也生出了不少傻头傻脑的见解，甚至被贺兰神评价“少见多怪”。不过经过一段时间的学习，我最终完成了第一阶段rustlings的所有题目。本文就写我初见Rust的一些想法咯~</p>
<h2 id="对Rust的认知变化（做rustlings有感）"><a href="#对Rust的认知变化（做rustlings有感）" class="headerlink" title="对Rust的认知变化（做rustlings有感）"></a>对Rust的认知变化（做rustlings有感）</h2><p>&emsp;&emsp;在学习Rust之前，飞飞神有跟我普及过Rust，说它很安全，但写起来很麻烦（举了Rust变量所有权的例子）。当时我没太理解，但不明觉厉，很长一段时间里我认为Rust安全且牛X，是某种高贵而神秘（雾）的语言。</p>
<p>&emsp;&emsp;参加训练营刚接触Rust半小时时，因为看到了很多熟悉的语法，我心里对Rust的期望似乎有所降低，觉得Rust不过是语法与其他语言略微不同……直到我看到了所有权、借用的概念，才真正感觉到这语言非同一般。可是rustlings中所有权一章的题目都挺简单的，没有为难人，这给了我一种“我已经完全了解所有权”的错觉……事实证明并非如此，在后续的题目中，随着代码复杂度的上升，经常会出现把一通报错改成另一通报错的情况，不过正是这些拷打，让我对这些新概念的理解慢慢扎实起来。</p>
<p>&emsp;&emsp;rustlings中间做得还蛮快的，不过感觉我自己有点囫囵吞枣，有一种知识从光滑的大脑溜过的感觉……直到多线程那一块，我彻底卡住了，大脑宕机……后来想了想原因有二：一是对前面知识点根本没有理解透彻；二是我完全没有接触过多线程方面的知识（以前写代码都是傻乎乎单个过程）。最让我崩溃的是支持多线程的可变借用的题，第一次做的时候调来调去搞不明白，挺打击自信的……后来把Rust学习扔在一边，两周后重新拾起来，居然很快解决了，看来学习真的需要“沉淀”的过程。</p>
<p>&emsp;&emsp;接着便没什么困难，直接杀完了基础的100题。算法题我感觉不算很难，毕竟都是很简单的数据结构。不过我认为我的答案不太简洁，可能（一定）包含很多没必要的操作（传值），或有优化的多的写法。归根到底还是自己对Rust的变量体系不熟悉，希望在日后的学习中，慢慢强化这方面，有些问题还是得交给时间（笑）。</p>
<h2 id="一些展望"><a href="#一些展望" class="headerlink" title="一些展望"></a>一些展望</h2><p>&emsp;&emsp;正如开头所说，我基础很薄弱，不指望能完成整个训练营，所以便怀着“主打学习”的心态。希望在第二阶段中我能建立对操作系统的认知框架，并尝试将其与我自己的专业知识结合——说不定暑假可以亲手用数字电路实现处理器，跑操作系统，想一想都觉得很酷（前提是我得会）。</p>

    </div>
    
    
    
    
    
    
    
</div>

            <footer id="footer">
    <div id="footer-wrap">
        <div>
            &copy;
            2024 - 2024 白熊の窝
            <span id="footer-icon">
                <i class="fa-solid fa-font-awesome fa-fw"></i>
            </span>
            &commat;白熊_IceBear
        </div>
        
    </div>
</footer>

        </div>
        
        <transition name="fade">
            <div id="preview" ref="preview" v-show="previewShow">
                <img id="preview-content" ref="previewContent" />
            </div>
        </transition>
        
    </div>
    <script src="/js/main.js"></script>
    
    




    
</body>
</html>
